import { Vector3 } from "@babylonjs/core/Maths/math.vector";
import { DefaultStage } from "../../default-stage";


abstract class AbstractWeapon {

    protected available = true;

    public readonly name: string;
    public readonly stage: DefaultStage;

    constructor(name: string, stage: DefaultStage) {
        this.stage = stage;
        this.name = name;
        this.initializeComponents();
    }

    public get enabled(): boolean {
        return this.available;
    }

    public set enabled(available: boolean) {
        this.available = available;
    }

    protected abstract initializeComponents(): void;

    protected abstract checkDamage(location: Vector3): void;

}


export { AbstractWeapon };